@tomorrowos/sdk 1.1.5 → 1.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/playlist-catalog.d.ts +5 -0
- package/dist/playlist-catalog.d.ts.map +1 -1
- package/dist/playlist-catalog.js +22 -1
- package/dist/screen-references.d.ts +37 -0
- package/dist/screen-references.d.ts.map +1 -0
- package/dist/screen-references.js +228 -0
- package/dist/screen-tags.d.ts +95 -0
- package/dist/screen-tags.d.ts.map +1 -0
- package/dist/screen-tags.js +835 -0
- package/dist/store/memory-store.d.ts +2 -0
- package/dist/store/memory-store.d.ts.map +1 -1
- package/dist/store/memory-store.js +11 -0
- package/dist/store/postgres-store.d.ts +2 -0
- package/dist/store/postgres-store.d.ts.map +1 -1
- package/dist/store/postgres-store.js +9 -0
- package/dist/store/sqlite-store.d.ts +2 -0
- package/dist/store/sqlite-store.d.ts.map +1 -1
- package/dist/store/sqlite-store.js +12 -0
- package/dist/store/types.d.ts +20 -0
- package/dist/store/types.d.ts.map +1 -1
- package/dist/tomorrowos.d.ts +7 -0
- package/dist/tomorrowos.d.ts.map +1 -1
- package/dist/tomorrowos.js +56 -1
- package/package.json +1 -1
- package/templates/cms-starter/package-lock.json +3 -3
- package/templates/cms-starter/package.json +2 -2
- package/templates/cms-starter/public/index.html +86 -1
- package/templates/cms-starter/public/methods.js +782 -11
- package/templates/cms-starter/public/panel.css +356 -0
- package/templates/cms-starter-v0/cms-panel/index.html +86 -1
- package/templates/cms-starter-v0/cms-panel/methods.js +782 -11
- package/templates/cms-starter-v0/cms-panel/panel.css +356 -0
- package/templates/cms-starter-v0/package-lock.json +3 -3
- package/templates/cms-starter-v0/package.json +2 -2
|
@@ -1144,3 +1144,359 @@ button.danger {
|
|
|
1144
1144
|
justify-content: center;
|
|
1145
1145
|
margin-top: 1.15rem;
|
|
1146
1146
|
}
|
|
1147
|
+
|
|
1148
|
+
.playlist-item-rule-summary {
|
|
1149
|
+
margin: 0 0 0.45rem;
|
|
1150
|
+
font-size: 0.75rem;
|
|
1151
|
+
color: #444;
|
|
1152
|
+
white-space: pre-line;
|
|
1153
|
+
}
|
|
1154
|
+
|
|
1155
|
+
.playlist-item-add-rule {
|
|
1156
|
+
width: 100%;
|
|
1157
|
+
margin-bottom: 0.45rem;
|
|
1158
|
+
}
|
|
1159
|
+
|
|
1160
|
+
.tag-rule-modal-card {
|
|
1161
|
+
width: min(92vw, 480px);
|
|
1162
|
+
padding: 0;
|
|
1163
|
+
overflow: hidden;
|
|
1164
|
+
display: flex;
|
|
1165
|
+
flex-direction: column;
|
|
1166
|
+
}
|
|
1167
|
+
|
|
1168
|
+
.tag-rule-modal-body {
|
|
1169
|
+
overflow: auto;
|
|
1170
|
+
padding: 1.25rem;
|
|
1171
|
+
min-height: 0;
|
|
1172
|
+
}
|
|
1173
|
+
|
|
1174
|
+
.tag-rule-modal-actions {
|
|
1175
|
+
justify-content: flex-end;
|
|
1176
|
+
margin-top: 0.35rem;
|
|
1177
|
+
}
|
|
1178
|
+
|
|
1179
|
+
.tag-rule-divider {
|
|
1180
|
+
border: 0;
|
|
1181
|
+
border-top: 1px solid #e4e4e7;
|
|
1182
|
+
margin: 1.15rem 0 1rem;
|
|
1183
|
+
}
|
|
1184
|
+
|
|
1185
|
+
.item-schedule-heading {
|
|
1186
|
+
margin-top: 0;
|
|
1187
|
+
}
|
|
1188
|
+
|
|
1189
|
+
.item-schedule-grid {
|
|
1190
|
+
display: grid;
|
|
1191
|
+
grid-template-columns: 1fr 1fr;
|
|
1192
|
+
gap: 0.65rem 0.85rem;
|
|
1193
|
+
margin: 0.75rem 0;
|
|
1194
|
+
}
|
|
1195
|
+
|
|
1196
|
+
.item-schedule-grid label {
|
|
1197
|
+
display: flex;
|
|
1198
|
+
flex-direction: column;
|
|
1199
|
+
gap: 0.25rem;
|
|
1200
|
+
font-size: 0.8rem;
|
|
1201
|
+
color: #444;
|
|
1202
|
+
}
|
|
1203
|
+
|
|
1204
|
+
.item-schedule-grid input {
|
|
1205
|
+
font: inherit;
|
|
1206
|
+
padding: 0.4rem 0.45rem;
|
|
1207
|
+
border: 1px solid #d4d4d8;
|
|
1208
|
+
border-radius: 8px;
|
|
1209
|
+
background: #fff;
|
|
1210
|
+
}
|
|
1211
|
+
|
|
1212
|
+
.item-schedule-repeats {
|
|
1213
|
+
margin: 0.15rem 0 0.4rem;
|
|
1214
|
+
font-size: 0.8rem;
|
|
1215
|
+
color: #444;
|
|
1216
|
+
}
|
|
1217
|
+
|
|
1218
|
+
.item-schedule-days {
|
|
1219
|
+
display: flex;
|
|
1220
|
+
flex-wrap: wrap;
|
|
1221
|
+
gap: 0.35rem;
|
|
1222
|
+
}
|
|
1223
|
+
|
|
1224
|
+
.item-schedule-day {
|
|
1225
|
+
padding: 0.3rem 0.45rem;
|
|
1226
|
+
font-size: 0.78rem;
|
|
1227
|
+
border-radius: 999px;
|
|
1228
|
+
}
|
|
1229
|
+
|
|
1230
|
+
.item-schedule-day.is-on {
|
|
1231
|
+
background: var(--brand-primary);
|
|
1232
|
+
border-color: color-mix(in srgb, var(--brand-primary) 82%, #000);
|
|
1233
|
+
}
|
|
1234
|
+
|
|
1235
|
+
.tag-rule-modal-header {
|
|
1236
|
+
display: flex;
|
|
1237
|
+
align-items: flex-start;
|
|
1238
|
+
justify-content: space-between;
|
|
1239
|
+
gap: 0.75rem;
|
|
1240
|
+
}
|
|
1241
|
+
|
|
1242
|
+
.tag-rule-modal-header h2 {
|
|
1243
|
+
margin: 0;
|
|
1244
|
+
font-size: 1.15rem;
|
|
1245
|
+
}
|
|
1246
|
+
|
|
1247
|
+
.tag-rule-close {
|
|
1248
|
+
border: 0;
|
|
1249
|
+
background: transparent;
|
|
1250
|
+
font-size: 1.4rem;
|
|
1251
|
+
line-height: 1;
|
|
1252
|
+
padding: 0 0.15rem;
|
|
1253
|
+
cursor: pointer;
|
|
1254
|
+
color: #444;
|
|
1255
|
+
}
|
|
1256
|
+
|
|
1257
|
+
.tag-rule-asset-name {
|
|
1258
|
+
margin: 0.35rem 0 1rem;
|
|
1259
|
+
color: #6b7280;
|
|
1260
|
+
font-size: 0.92rem;
|
|
1261
|
+
word-break: break-all;
|
|
1262
|
+
}
|
|
1263
|
+
|
|
1264
|
+
.tag-rule-section {
|
|
1265
|
+
margin: 0 0 0.35rem;
|
|
1266
|
+
font-size: 1rem;
|
|
1267
|
+
}
|
|
1268
|
+
|
|
1269
|
+
.tag-rule-sentence {
|
|
1270
|
+
display: flex;
|
|
1271
|
+
flex-wrap: wrap;
|
|
1272
|
+
align-items: center;
|
|
1273
|
+
gap: 0.4rem;
|
|
1274
|
+
margin: 0.85rem 0 0.75rem;
|
|
1275
|
+
font-size: 0.95rem;
|
|
1276
|
+
}
|
|
1277
|
+
|
|
1278
|
+
.tag-rule-sentence select {
|
|
1279
|
+
font: inherit;
|
|
1280
|
+
padding: 0.28rem 0.4rem;
|
|
1281
|
+
border: 1px solid #d4d4d8;
|
|
1282
|
+
border-radius: 8px;
|
|
1283
|
+
background: #fff;
|
|
1284
|
+
}
|
|
1285
|
+
|
|
1286
|
+
.tag-rule-selected {
|
|
1287
|
+
display: flex;
|
|
1288
|
+
flex-wrap: wrap;
|
|
1289
|
+
gap: 0.35rem;
|
|
1290
|
+
margin-bottom: 0.55rem;
|
|
1291
|
+
}
|
|
1292
|
+
|
|
1293
|
+
.tag-rule-selected:empty {
|
|
1294
|
+
display: none;
|
|
1295
|
+
}
|
|
1296
|
+
|
|
1297
|
+
.tag-rule-add {
|
|
1298
|
+
position: relative;
|
|
1299
|
+
}
|
|
1300
|
+
|
|
1301
|
+
.tag-rule-add input {
|
|
1302
|
+
width: 100%;
|
|
1303
|
+
box-sizing: border-box;
|
|
1304
|
+
padding: 0.7rem 0.8rem;
|
|
1305
|
+
border: 1px solid #d4d4d8;
|
|
1306
|
+
border-radius: 10px;
|
|
1307
|
+
font: inherit;
|
|
1308
|
+
font-size: 0.95rem;
|
|
1309
|
+
}
|
|
1310
|
+
|
|
1311
|
+
.tag-rule-options {
|
|
1312
|
+
position: absolute;
|
|
1313
|
+
z-index: 2;
|
|
1314
|
+
left: 0;
|
|
1315
|
+
right: 0;
|
|
1316
|
+
top: calc(100% + 4px);
|
|
1317
|
+
margin: 0;
|
|
1318
|
+
padding: 0.25rem 0;
|
|
1319
|
+
list-style: none;
|
|
1320
|
+
background: #fff;
|
|
1321
|
+
border: 1px solid #e4e4e7;
|
|
1322
|
+
border-radius: 10px;
|
|
1323
|
+
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
|
|
1324
|
+
max-height: 180px;
|
|
1325
|
+
overflow: auto;
|
|
1326
|
+
}
|
|
1327
|
+
|
|
1328
|
+
.tag-rule-options button {
|
|
1329
|
+
display: block;
|
|
1330
|
+
width: 100%;
|
|
1331
|
+
text-align: left;
|
|
1332
|
+
border: 0;
|
|
1333
|
+
background: transparent;
|
|
1334
|
+
padding: 0.45rem 0.75rem;
|
|
1335
|
+
font: inherit;
|
|
1336
|
+
cursor: pointer;
|
|
1337
|
+
}
|
|
1338
|
+
|
|
1339
|
+
.tag-rule-options button:hover,
|
|
1340
|
+
.tag-rule-options button:focus {
|
|
1341
|
+
background: #f4f4f5;
|
|
1342
|
+
}
|
|
1343
|
+
|
|
1344
|
+
.playlist-item-rule {
|
|
1345
|
+
display: grid;
|
|
1346
|
+
gap: 0.35rem;
|
|
1347
|
+
margin: 0.45rem 0 0.55rem;
|
|
1348
|
+
}
|
|
1349
|
+
|
|
1350
|
+
.playlist-item-rule-label {
|
|
1351
|
+
display: grid;
|
|
1352
|
+
gap: 0.25rem;
|
|
1353
|
+
font-size: 0.75rem;
|
|
1354
|
+
font-weight: 600;
|
|
1355
|
+
}
|
|
1356
|
+
|
|
1357
|
+
.playlist-item-rule-op,
|
|
1358
|
+
.playlist-item-rule-tags,
|
|
1359
|
+
.device-tag-add input,
|
|
1360
|
+
#screenTagFilter {
|
|
1361
|
+
width: 100%;
|
|
1362
|
+
box-sizing: border-box;
|
|
1363
|
+
padding: 0.4rem 0.5rem;
|
|
1364
|
+
border: 1px solid #d6d3ce;
|
|
1365
|
+
border-radius: 6px;
|
|
1366
|
+
font: inherit;
|
|
1367
|
+
font-size: 0.8rem;
|
|
1368
|
+
background: #fff;
|
|
1369
|
+
}
|
|
1370
|
+
|
|
1371
|
+
.device-tags {
|
|
1372
|
+
margin-top: 0.75rem;
|
|
1373
|
+
padding-top: 0.75rem;
|
|
1374
|
+
border-top: 1px solid #e4e1dc;
|
|
1375
|
+
}
|
|
1376
|
+
|
|
1377
|
+
.device-tags-label {
|
|
1378
|
+
font-size: 0.75rem;
|
|
1379
|
+
font-weight: 600;
|
|
1380
|
+
margin-bottom: 0.35rem;
|
|
1381
|
+
}
|
|
1382
|
+
|
|
1383
|
+
.device-tag-chips {
|
|
1384
|
+
display: flex;
|
|
1385
|
+
flex-wrap: wrap;
|
|
1386
|
+
gap: 0.35rem;
|
|
1387
|
+
margin-bottom: 0.45rem;
|
|
1388
|
+
}
|
|
1389
|
+
|
|
1390
|
+
.device-tag-empty {
|
|
1391
|
+
font-size: 0.75rem;
|
|
1392
|
+
color: #71717a;
|
|
1393
|
+
}
|
|
1394
|
+
|
|
1395
|
+
.device-tag-chip {
|
|
1396
|
+
border: 1px solid #d6d3ce;
|
|
1397
|
+
background: #fff;
|
|
1398
|
+
border-radius: 999px;
|
|
1399
|
+
padding: 0.15rem 0.55rem;
|
|
1400
|
+
font-size: 0.75rem;
|
|
1401
|
+
cursor: pointer;
|
|
1402
|
+
}
|
|
1403
|
+
|
|
1404
|
+
.device-tag-add {
|
|
1405
|
+
display: flex;
|
|
1406
|
+
flex-wrap: wrap;
|
|
1407
|
+
align-items: center;
|
|
1408
|
+
gap: 0.4rem;
|
|
1409
|
+
margin-bottom: 0.85rem;
|
|
1410
|
+
}
|
|
1411
|
+
|
|
1412
|
+
.device-tag-add > button {
|
|
1413
|
+
padding: 0.4rem 0.65rem;
|
|
1414
|
+
font-size: 0.8rem;
|
|
1415
|
+
line-height: normal;
|
|
1416
|
+
border-radius: 6px;
|
|
1417
|
+
}
|
|
1418
|
+
|
|
1419
|
+
.device-tag-add input {
|
|
1420
|
+
flex: 1 1 8rem;
|
|
1421
|
+
width: auto;
|
|
1422
|
+
}
|
|
1423
|
+
|
|
1424
|
+
#pairedDevicesSection > .field-label,
|
|
1425
|
+
.screen-tag-toolbar .field-label {
|
|
1426
|
+
display: grid;
|
|
1427
|
+
gap: 0.3rem;
|
|
1428
|
+
margin: 0;
|
|
1429
|
+
max-width: 18rem;
|
|
1430
|
+
font-size: 0.85rem;
|
|
1431
|
+
font-weight: 600;
|
|
1432
|
+
}
|
|
1433
|
+
|
|
1434
|
+
.screen-tag-toolbar {
|
|
1435
|
+
display: flex;
|
|
1436
|
+
flex-wrap: wrap;
|
|
1437
|
+
align-items: flex-end;
|
|
1438
|
+
gap: 0.75rem;
|
|
1439
|
+
margin: 0.75rem 0 1rem;
|
|
1440
|
+
}
|
|
1441
|
+
|
|
1442
|
+
.manage-tag-list {
|
|
1443
|
+
list-style: none;
|
|
1444
|
+
margin: 0.75rem 0;
|
|
1445
|
+
padding: 0;
|
|
1446
|
+
display: grid;
|
|
1447
|
+
gap: 0.4rem;
|
|
1448
|
+
}
|
|
1449
|
+
|
|
1450
|
+
.manage-tag-row {
|
|
1451
|
+
display: flex;
|
|
1452
|
+
align-items: center;
|
|
1453
|
+
gap: 0.4rem;
|
|
1454
|
+
}
|
|
1455
|
+
|
|
1456
|
+
.manage-tag-row > span {
|
|
1457
|
+
flex: 1;
|
|
1458
|
+
min-width: 0;
|
|
1459
|
+
word-break: break-all;
|
|
1460
|
+
}
|
|
1461
|
+
|
|
1462
|
+
.manage-tag-rename,
|
|
1463
|
+
.manage-tag-create input {
|
|
1464
|
+
flex: 1;
|
|
1465
|
+
min-width: 0;
|
|
1466
|
+
box-sizing: border-box;
|
|
1467
|
+
padding: 0.4rem 0.5rem;
|
|
1468
|
+
border: 1px solid #d4d4d8;
|
|
1469
|
+
border-radius: 8px;
|
|
1470
|
+
font: inherit;
|
|
1471
|
+
}
|
|
1472
|
+
|
|
1473
|
+
.manage-tag-create {
|
|
1474
|
+
display: flex;
|
|
1475
|
+
gap: 0.4rem;
|
|
1476
|
+
}
|
|
1477
|
+
|
|
1478
|
+
.manage-tag-empty {
|
|
1479
|
+
color: #71717a;
|
|
1480
|
+
font-size: 0.85rem;
|
|
1481
|
+
}
|
|
1482
|
+
|
|
1483
|
+
.manage-tag-error {
|
|
1484
|
+
min-height: 1.2em;
|
|
1485
|
+
margin: 0.6rem 0 0;
|
|
1486
|
+
color: #b42318;
|
|
1487
|
+
font-size: 0.85rem;
|
|
1488
|
+
}
|
|
1489
|
+
|
|
1490
|
+
.device-tag-picker {
|
|
1491
|
+
position: relative;
|
|
1492
|
+
flex: 1 1 8rem;
|
|
1493
|
+
min-width: 0;
|
|
1494
|
+
}
|
|
1495
|
+
|
|
1496
|
+
.device-tag-picker input {
|
|
1497
|
+
width: 100%;
|
|
1498
|
+
}
|
|
1499
|
+
|
|
1500
|
+
.device-tag-picker .tag-rule-options {
|
|
1501
|
+
z-index: 5;
|
|
1502
|
+
}
|
|
@@ -58,6 +58,16 @@
|
|
|
58
58
|
|
|
59
59
|
<section class="card" id="pairedDevicesSection">
|
|
60
60
|
<h2>Paired devices</h2>
|
|
61
|
+
<p class="hint">
|
|
62
|
+
Screen tags choose which playlist items this screen plays. Adding or removing a tag updates the screen on its own — publish the playlist again only when you first assign it.
|
|
63
|
+
</p>
|
|
64
|
+
<div class="screen-tag-toolbar">
|
|
65
|
+
<label class="field-label">
|
|
66
|
+
Show screens with tag
|
|
67
|
+
<input id="screenTagFilter" type="text" placeholder="screen-a" autocomplete="off" />
|
|
68
|
+
</label>
|
|
69
|
+
<button type="button" id="manageTagsBtn">Manage tags</button>
|
|
70
|
+
</div>
|
|
61
71
|
<div id="devicesGrid" class="devices-grid">
|
|
62
72
|
<p class="devices-empty" id="devicesEmpty">No paired devices yet.</p>
|
|
63
73
|
</div>
|
|
@@ -129,7 +139,9 @@
|
|
|
129
139
|
<h2>Assets</h2>
|
|
130
140
|
<button type="button" class="primary" id="addAssetBtn" title="Add image or video">+</button>
|
|
131
141
|
</div>
|
|
132
|
-
<p class="hint playlist-assets-hint">
|
|
142
|
+
<p class="hint playlist-assets-hint">
|
|
143
|
+
Drag ⋮⋮ to reorder. Add rule chooses which screens and which times play that asset. No tags means every screen. No schedule means all the time. Save the playlist to apply.
|
|
144
|
+
</p>
|
|
133
145
|
<input
|
|
134
146
|
type="file"
|
|
135
147
|
id="fileInput"
|
|
@@ -150,6 +162,79 @@
|
|
|
150
162
|
</aside>
|
|
151
163
|
</div>
|
|
152
164
|
|
|
165
|
+
<div id="manageTagsModal" class="modal hidden" role="dialog" aria-modal="true" aria-labelledby="manageTagsTitle">
|
|
166
|
+
<div class="modal-backdrop" data-close-manage-tags="1"></div>
|
|
167
|
+
<div class="modal-card tag-rule-modal-card">
|
|
168
|
+
<div class="tag-rule-modal-body">
|
|
169
|
+
<div class="tag-rule-modal-header">
|
|
170
|
+
<h2 id="manageTagsTitle">Tags</h2>
|
|
171
|
+
<button type="button" class="tag-rule-close" data-close-manage-tags="1" aria-label="Close">×</button>
|
|
172
|
+
</div>
|
|
173
|
+
<p class="hint">A tag that is still selected on a screen or an asset cannot be deleted.</p>
|
|
174
|
+
<ul id="manageTagList" class="manage-tag-list"></ul>
|
|
175
|
+
<div class="manage-tag-create">
|
|
176
|
+
<input id="manageTagInput" type="text" placeholder="New tag" autocomplete="off" />
|
|
177
|
+
<button type="button" id="manageTagAddBtn" class="primary">Add tag</button>
|
|
178
|
+
</div>
|
|
179
|
+
<p id="manageTagError" class="manage-tag-error"></p>
|
|
180
|
+
</div>
|
|
181
|
+
</div>
|
|
182
|
+
</div>
|
|
183
|
+
|
|
184
|
+
<div id="tagRuleModal" class="modal hidden" role="dialog" aria-modal="true" aria-labelledby="tagRuleTitle">
|
|
185
|
+
<div class="modal-backdrop" data-close-tag-rule-modal="1"></div>
|
|
186
|
+
<div class="modal-card tag-rule-modal-card">
|
|
187
|
+
<div class="tag-rule-modal-body">
|
|
188
|
+
<div class="tag-rule-modal-header">
|
|
189
|
+
<h2 id="tagRuleTitle">Where and when it plays</h2>
|
|
190
|
+
<button type="button" class="tag-rule-close" data-close-tag-rule-modal="1" aria-label="Close">×</button>
|
|
191
|
+
</div>
|
|
192
|
+
<p class="tag-rule-asset-name" id="tagRuleAssetName"></p>
|
|
193
|
+
<h3 class="tag-rule-section">Screens</h3>
|
|
194
|
+
<p class="hint">No tags means it plays on every screen of the playlist.</p>
|
|
195
|
+
<p class="tag-rule-sentence">
|
|
196
|
+
<span>Play on screens with</span>
|
|
197
|
+
<select id="tagRuleMatch" aria-label="Tag match">
|
|
198
|
+
<option value="any">any of</option>
|
|
199
|
+
<option value="all">all of</option>
|
|
200
|
+
<option value="notAll">not all of</option>
|
|
201
|
+
<option value="notAny">none of</option>
|
|
202
|
+
</select>
|
|
203
|
+
<span>these tags</span>
|
|
204
|
+
</p>
|
|
205
|
+
<div id="tagRuleSelected" class="tag-rule-selected"></div>
|
|
206
|
+
<div class="tag-rule-add">
|
|
207
|
+
<input id="tagRuleAddInput" type="text" placeholder="Add a tag" autocomplete="off" />
|
|
208
|
+
<ul id="tagRuleOptions" class="tag-rule-options hidden" role="listbox"></ul>
|
|
209
|
+
</div>
|
|
210
|
+
<hr class="tag-rule-divider" />
|
|
211
|
+
<h3 class="tag-rule-section item-schedule-heading">Schedule</h3>
|
|
212
|
+
<p class="hint">Leave a field blank for no limit. If the end time is earlier than the start time, playback continues past midnight.</p>
|
|
213
|
+
<div class="item-schedule-grid">
|
|
214
|
+
<label>From date<input type="date" id="itemScheduleStartDate" /></label>
|
|
215
|
+
<label>Until date<input type="date" id="itemScheduleEndDate" /></label>
|
|
216
|
+
<label>From time<input type="time" id="itemScheduleStartTime" /></label>
|
|
217
|
+
<label>Until time<input type="time" id="itemScheduleEndTime" /></label>
|
|
218
|
+
</div>
|
|
219
|
+
<p class="item-schedule-repeats">Repeats on</p>
|
|
220
|
+
<div class="item-schedule-days" role="group" aria-label="Days, Monday through Sunday">
|
|
221
|
+
<button type="button" class="item-schedule-day is-on" data-item-schedule-day="0" aria-pressed="true">Mon</button>
|
|
222
|
+
<button type="button" class="item-schedule-day is-on" data-item-schedule-day="1" aria-pressed="true">Tue</button>
|
|
223
|
+
<button type="button" class="item-schedule-day is-on" data-item-schedule-day="2" aria-pressed="true">Wed</button>
|
|
224
|
+
<button type="button" class="item-schedule-day is-on" data-item-schedule-day="3" aria-pressed="true">Thu</button>
|
|
225
|
+
<button type="button" class="item-schedule-day is-on" data-item-schedule-day="4" aria-pressed="true">Fri</button>
|
|
226
|
+
<button type="button" class="item-schedule-day is-on" data-item-schedule-day="5" aria-pressed="true">Sat</button>
|
|
227
|
+
<button type="button" class="item-schedule-day is-on" data-item-schedule-day="6" aria-pressed="true">Sun</button>
|
|
228
|
+
</div>
|
|
229
|
+
<p id="itemScheduleError" class="manage-tag-error"></p>
|
|
230
|
+
<div class="modal-actions tag-rule-modal-actions">
|
|
231
|
+
<button type="button" id="tagRuleCancelBtn">Cancel</button>
|
|
232
|
+
<button type="button" id="tagRuleApplyBtn" class="primary">Apply</button>
|
|
233
|
+
</div>
|
|
234
|
+
</div>
|
|
235
|
+
</div>
|
|
236
|
+
</div>
|
|
237
|
+
|
|
153
238
|
<div id="publishModal" class="modal hidden" role="dialog" aria-modal="true">
|
|
154
239
|
<div class="modal-backdrop" data-close-modal="1"></div>
|
|
155
240
|
<div class="modal-card">
|